<?php
class User extends AppModel {
    public $name = 'User';
    
    public $hasMany = array(
        'Test' => array(
            'className' => 'Test',
            'foreignKey' => 'user_id',
            'dependent' => true
        )
    );
    
    //Check data validation
    public $validate = array(
        'username' => array(
            'Chỉ được chứa ký tự và số' => array(
                'rule' => 'alphaNumeric',
                'message' => 'Chỉ được chứa ký tự và số.',
                'required' => true
            ),
            'Phải từ 5 đến 15 ký tự.' => array(
                'rule' => array('between', 5, 15),
                'message' => 'Phải từ 5 đến 15 ký tự.',
                'required' => true
            ),
            'Tài khoản đã tồn tại.' => array(
                'rule' => 'isUnique',
                'message' => 'Tên tài khoản đã tồn tại, vui lòng chọn tên khác.',
                'required' => true
            )
        ),
        'password' => array(
            'Phải từ 5 đến 15 ký tự.' => array(
                'rule' => array('between', 5, 15),
                'message' => 'Phải từ 5 đến 15 ký tự.',
                'required' => true
            ),
            'Chỉ được chứa ký tự và số.' => array(
                'rule' => 'alphaNumeric',
                'message' => 'Chỉ được chứa ký tự và số.',
                'required' => true
            ),
            'Xác nhận mật khẩu không khớp.' => array(
                'rule' => 'matchPasswords',
                'message' => 'Xác nhận mật khẩu không khớp.',
                'required' => true
            )
        ),
        'password_confirm' => array(
            'Phải từ 5 đến 15 ký tự.' => array(
                'rule' => array('between', 5, 15),
                'message' => 'Phải từ 5 đến 15 ký tự.',
                'required' => true
            ),
            'Chỉ được chứa ký tự và số.' => array(
                'rule' => 'alphaNumeric',
                'message' => 'Chỉ được chứa ký tự và số.',
                'required' => true
            )
        ),
        'email' => array(
            'Email không đúng định dạng.' => array(
                'rule' => array('email'),
                'message' => 'Email không đúng định dạng.',
                'required' => true
            ),
            'Không quá 100 ký tự.' => array(
                'rule' => array('between', 1, 100),
                'message' => 'Không quá 100 ký tự.',
                'required' => true
            )
        )
    );
    
    public function matchPasswords($data) {
        return $data['password'] == $this->data['User']['password_confirm'];
    }
    
    public function beforeSave() {
        if(isset($this->data['User']['password'])) {
            $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']);
            return true;
        }
    }
}
?>